package com.example.hello.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

import com.example.hello.entity.EmpDO;
import com.example.hello.model.Result;
import com.example.hello.model.request.LoginRequest;
import com.example.hello.model.response.LoginResponse;
import com.example.hello.service.EmpService;
import com.example.hello.util.JwtTokenUtil;

/**
 * 认证控制器 - 提供根路径的登录接口
 */
@RestController
public class AuthController {

    @Autowired
    private EmpService empService;

    @Autowired
    private JwtTokenUtil jwtTokenUtil;

    /**
     * 用户登录
     * 
     * @param loginRequest 登录请求
     * @return 登录响应
     */
    @PostMapping("/login")
    public Result<LoginResponse.LoginResponseData> login(@RequestBody LoginRequest loginRequest) {
        // 根据用户名查询员工信息
        EmpDO emp = empService.getEmpByUsername(loginRequest.getUsername());
        
        // 如果员工不存在或密码不匹配，返回登录失败
        if (emp == null || !loginRequest.getPassword().equals(emp.getPassword())) {
            return Result.fail(400, "用户名或密码错误");
        }
        
        // 构建响应数据
        String token = jwtTokenUtil.generateToken(emp.getUsername(), Long.valueOf(emp.getId()));
        
        // 构建用户信息
        LoginResponse.LoginResponseData responseData = LoginResponse.LoginResponseData.builder()
                .token(token)
                .empDO(emp)
                .build();
        
        // 返回成功响应
        return Result.success("登录成功", responseData);
    }
} 